맨위로가기

전역 고유 식별자

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

전역 고유 식별자(GUID)는 128비트 숫자로, 소프트웨어 및 시스템에서 객체를 고유하게 식별하는 데 사용된다. 16진수로 표현되며, 일반적으로 하이픈으로 구분된 32자리의 문자열 또는 중괄호로 묶인 형태로 표기한다. 초기 GUID 생성 알고리즘은 MAC 주소를 기반으로 하여 개인 정보 및 보안 문제를 야기했으나, 이후 난수를 사용하여 이 문제를 해결했다. GUID는 마이크로소프트 COM, DCOM, 오피스 문서, ASF, RSS, Atom 등 다양한 분야에서 인터페이스, 클래스, 문서, 스트림 등을 식별하는 데 활용된다.

2. 기본 구조

GUID는 16바이트, 즉 128비트 숫자이다. 16진수로 표현하면 다음과 같은 형태이다.

: 3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01

GUID를 텍스트로 표현하는 방법은 구현에 따라 다를 수 있지만, 일반적으로는 GUID를 순서대로 4바이트, 2바이트, 2바이트, 8바이트로 나눈 뒤 하이픈으로 구분하여 16진수로 작성하고 중괄호로 묶는 방식을 사용한다.

: {3F2504E0-4F89-11D3-9A0C0305E82C3301}

자료 구조로 사용할 때는 다음과 같은 형태가 일반적이다.

시작 위치(비트)끝 위치(비트)형식guiddef.h의 C 자료형[5]
03132비트 부호 없는 정수unsigned long
324716비트 부호 없는 정수unsigned short
486316비트 부호 없는 정수unsigned short
641278비트 부호 없는 정수 8개unsigned char[8]


3. 텍스트 표기

GUID는 16바이트, 즉 128비트 숫자이다. 특별히 규정된 텍스트 표현이 없기 때문에, GUID를 텍스트로 쓰는 방법은 구현에 따라 다를 수 있다.

GUID의 표기에는 일반적으로 다음과 같은 16진 표기가 사용된다.

:3F2504E0-4F89-11D3-9A0C-0305E82C3301

이 텍스트 표기는 다음과 같은 32자리 구조를 가진다.

# Data1:3F2504E0(8자리)

# 하이픈

# Data2:4F89(4자리)

# 하이픈

# Data3:11D3(4자리)

# 하이픈

# Data4의 처음 2 항목:9A 0C(4자리)

# 하이픈

# Data4의 나머지 6 항목:03 05 E8 2C 33 01(12자리)

GUID를 순서대로 4바이트, 2바이트, 2바이트, 8바이트로 나눈 뒤 하이픈으로 구분하여 16진수로 작성하고 중괄호(브레이스)로 묶어서 표기하는 경우도 많다.

:{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

4. 알고리즘

초기 GUID 생성 알고리즘(V1 GUID)은 사용자 네트워크 카드의 MAC 주소를 기반으로 생성되어 개인 정보 및 보안 문제를 야기할 수 있다는 비판을 받았다. 이 헛점은 멜리사(웜) 개발자를 찾는 데 사용되기도 하였다.[1] MAC 주소를 사용하는 V1 GUID는 세 번째 숫자 그룹의 첫 번째 숫자에 "1"을 사용한다. (예: {2f1e4fc0-81fd-'''1'''1da-9156-00036a0f876a})[1] 이후 알고리즘은 MAC 주소 대신 임의의 숫자를 사용하여 개인 정보 및 보안 문제를 해결하였으며, 세 번째 숫자 그룹의 첫 번째 숫자에 "4"를 사용한다. (예: {38a52be4-9352-'''4'''53e-af97-5c3b448652f0})[1]

5. GUID의 사용

마이크로소프트 컴포넌트 오브젝트 모델(COM)에서는 GUID를 구성 요소의 인터페이스들을 구별하기 위해 사용한다. 즉 서로 호환되지 않을 수 있는 두 개의 컴포넌트가 동일한 인터페이스 이름을 사용하더라도, 각각의 인터페이스는 언제나 고유한 GUID를 갖기 때문에 구별할 수 있게 된다.

COM에서 사용하는 GUID는 다음과 같다.

GUID 종류설명
IID인터페이스 식별자
CLSID클래스 식별자
LIBID타입 라이브러리 식별자
CATID카테고리 식별자 (이 식별자가 클래스에 있으면, 해당 클래스가 특정 클래스 카테고리에 속한다는 것을 표시한다)



DCOM은 다음과 같은 GUID를 추가로 더 사용한다.

GUID 종류설명
AppID응용 프로그램 식별자
MID기계 식별자
IPID인터페이스 포인터 식별자 (RPC 용 인터페이스에 사용)
CID커젤러티(causality) 식별자 (RPC 세션에 사용)
OID오브젝트 식별자 (오브젝트 인스턴스에 사용)
OXID오브젝트 익스포터 식별자 (RPC를 수행하는 시스템 오브젝트의 인스턴스에 사용)
SETID핑 셋 식별자 (오브젝트 그룹에 사용)



위의 GUID들은 쓰이는 형태가 서로 다르다면, 값이 중복되어도 문제가 되지 않는다. 예를 들어, 한 클래스의 CLSID와 다른 클래스의 IID가 서로 같더라도 두 클래스는 문제 없이 존재할 수 있다. 그러나 같은 CLSID를 가지는 두 개의 서로 다른 클래스가 존재하는 것은 불가능하다.

GUID는 또한 마이크로소프트 오피스 프로그램에서 작성한 문서에도 삽입된다. 능동 스트리밍 포맷(Advanced Streaming Format, ASF)에서는 각각의 오디오 및 비디오 스트림들에 GUID를 할당하여 식별한다.

RSS의 일부 버전과 Atom에는 글 또는 웹로그 포스트를 유일하게 구별할 수 있도록 각각 guid 태그와 id 태그를 가지고 있지만, 이들의 쓰임은 조금 다르다. RSS의 guid 태그에는 어떠한 문자열도 사용할 수 있으며, 실제로는 일반적으로 포스트된 URL을 사용한다. Atom의 id 태그에는 반드시 유효한 URI를 사용해야 한다.


  • COM(Component Object Model)에서 사용되는 객체 식별을 위한 클래스 ID, 인터페이스 ID 등.
  • MSBuild에서 사용되는 프로젝트 ID 등.

참조

[1] 블로그 Generate GUID using guidgen.exe – Syed's Blog https://blogs.msdn.m[...]
[2] 문서 CoCreateGuid function (combaseapi.h) | Microsoft Docs https://docs.microso[...]
[3] 문서 UuidCreate function (rpcdce.h) | Microsoft Docs https://docs.microso[...]
[4] 문서 Guid.NewGuid Method (System) | Microsoft Docs https://docs.microso[...]
[5] 문서 GUID | Microsoft Docs https://docs.microso[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com